 /*******************************************************************************
  * Copyright (c) 2000, 2005 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
  * http://www.eclipse.org/legal/epl-v10.html
  *
  * Contributors:
  * IBM Corporation - initial API and implementation
  *******************************************************************************/
 package org.eclipse.ui;

 import org.eclipse.jface.resource.ImageDescriptor;

 /**
  * A perspective descriptor describes a perspective in an
  * <code>IPerspectiveRegistry</code>.
  * <p>
  * A perspective is a template for view visibility, layout, and action visibility
  * within a workbench page. There are two types of perspective: a predefined
  * perspective and a custom perspective.
  * <ul>
  * <li>A predefined perspective is defined by an extension to the workbench's
  * perspective extension point (<code>"org.eclipse.ui.perspectives"</code>).
  * The extension defines a id, label, and <code>IPerspectiveFactory</code>.
  * A perspective factory is used to define the initial layout for a page.
  * </li>
  * <li>A custom perspective is defined by the user. In this case a predefined
  * perspective is modified to suit a particular task and saved as a new
  * perspective. The attributes for the perspective are stored in a separate file
  * in the workbench's metadata directory.
  * </li>
  * </ul>
  * </p>
  * <p>
  * Within a page the user can open any of the perspectives known
  * to the workbench's perspective registry, typically by selecting one from the
  * workbench's <code>Open Perspective</code> menu. When selected, the views
  * and actions within the active page rearrange to reflect the perspective.
  * </p>
  * <p>
  * This interface is not intended to be implemented by clients.
  * </p>
  * @see IPerspectiveRegistry
  */
 public interface IPerspectiveDescriptor {
     /**
      * Returns the description of this perspective.
      * This is the value of its <code>"description"</code> attribute.
      *
      * @return the description
      * @since 3.0
      */
     public String getDescription();

     /**
      * Returns this perspective's id. For perspectives declared via an extension,
      * this is the value of its <code>"id"</code> attribute.
      *
      * @return the perspective id
      */
     public String getId();

     /**
      * Returns the descriptor of the image to show for this perspective.
      * If the extension for this perspective specifies an image, the descriptor
      * for it is returned. Otherwise a default image is returned.
      *
      * @return the descriptor of the image to show for this perspective
      */
     public ImageDescriptor getImageDescriptor();

     /**
      * Returns this perspective's label. For perspectives declared via an extension,
      * this is the value of its <code>"label"</code> attribute.
      *
      * @return the label
      */
     public String getLabel();
 }

